﻿using System;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace OperacionesDesconectadas
{
    public partial class OperacionesDesconectadasForm : Form
    {
        public OperacionesDesconectadasForm()
        {
            InitializeComponent();
        }

        private void OperacionesDesconectadasForm_Load(object sender, EventArgs e)
        {
            listbox("------------------------------------------------------------");
            listbox("Se inicia la conexion.");
            try
            {
                listbox("Conectando a la base.");
                librosTableAdapter.Fill(masterDataSet.Libros);
                try
                {
                    listbox("Carga el archivo XML");
                    System.Data.DataSet ds = masterDataSet.Clone();
                    ds.ReadXml("c:\\Temp\\dataset.xml");
                    masterDataSet.Merge(ds);
                    listbox("Sincroniza la informacion XML y Base");
                    librosTableAdapter.Update(masterDataSet);
                    listbox("Listo!");
                }
                catch (System.IO.IOException exception)
                {
                    listbox("No hay archivo XML, no hay cambios en los datos.");
                }
            }
            catch (SqlException objException)
            {
                if (objException.ErrorCode == -2146232060)
                {
                    listbox("Error de conexion, solo se trabajara con el XML.");
                    try
                    {
                        listbox("Carga el archivo XML");
                        System.Data.DataSet ds = masterDataSet.Clone();
                        ds.ReadXml("c:\\Temp\\dataset.xml");
                        masterDataSet.Merge(ds);
                        listbox("Listo!");
                    }
                    catch (System.IO.IOException exception)
                    {
                        listbox("No hay archivo XML, no hay cambios en los datos.");
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listbox("------------------------------------------------------------");
            listbox("Click boton Grabar");
            try
            {
                librosTableAdapter.Update(this.masterDataSet); listbox("Graba en la base");
            }
            catch (SqlException objException)
            {
                if (objException.ErrorCode == -2146232060)
                {
                    listbox("Ocurrio un error al grabar en la base asi que lo guardo temporalmente en un xml local");
                    this.masterDataSet.WriteXml("c:\\Temp\\dataset.xml"); listbox("Escribe XML");
                    listbox("Ya grabo el archivo... verificar");
                }
            }
        }
        
        private void listbox(String messages) {
            this.logListBox.Items.Add(messages);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.logListBox.Items.Clear();
        }
    }
}
